﻿using sipfe.model.bandeja;
using sipfe.model.dataAccess;
using sipfe.model.sqlExecutor;
using sipfe.model.vo;
using sipfe.util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace sipfe.service.bandeja
{
    public class BandejaService
    {

        public IList<dynamic> filtraPorFechaService(string dFecInicio, string dFecFin, string tipoBandeja, 
                                                    string nIdeDepUser, string perfilUsuario, string idUsuario)
        {
            dFecInicio = UtilitariosUtil.formatearFecha(dFecInicio).ToString();
            dFecFin = UtilitariosUtil.formatearFecha(dFecFin).ToString();

            if (Constante.PERFIL_USUARIO.INVITADO_WEB.Equals(perfilUsuario))
            {
                String[] parametros = new String[] { dFecInicio, dFecFin, tipoBandeja, nIdeDepUser, idUsuario };
                String[] nombreParametros = new String[] { "dFecInicio", "dFecFin", "tipoBandeja", "nIdeDepUser", "idUsuario" };
                return SqlExecutorSP.executeStore("paSIPFiltraBandejaPorFechaInv", parametros, nombreParametros); 
            }
            else
            {
                String[] parametros = new String[] { dFecInicio, dFecFin, tipoBandeja, nIdeDepUser};
                String[] nombreParametros = new String[] { "dFecInicio", "dFecFin", "tipoBandeja", "nIdeDepUser" };

                //paSIPFiltraBandejaSalidaPorFecha
                if (Constante.TIPO_BANDEJA.BANDEJA_SALIDA.Equals(tipoBandeja))
                {
                    return SqlExecutorSP.executeStore("paSIPFiltraBandejaSalidaPorFecha", parametros, nombreParametros);
                }else{
                    return SqlExecutorSP.executeStore("paSIPFiltraBandejaPorFecha", parametros, nombreParametros);
                }




               // return SqlExecutorSP.executeStore("paSIPFiltraBandejaPorFecha", parametros, nombreParametros); 
            }            
        }

        public IList<dynamic> buscarPorNITService(string nIdeDepSol, string nIdeClaseSolicitud, string nAnnSolicitud,
                                                    string nNumCorre, string nIdeDepUser, string tipoBandeja)
        {
            String[] parametros = new String[] { nIdeDepSol, nIdeClaseSolicitud, nAnnSolicitud, nNumCorre, tipoBandeja, nIdeDepUser };
            String[] nombreParametros = new String[] { "nIdeDepSol", "nIdeClaseSolicitud", "nAnnSolicitud", "nNumCorre", "tipoBandeja", "nIdeDepUser" };
            return SqlExecutorSP.executeStore("paSIPFiltraBandejaPorNIT", parametros, nombreParametros); ;
        }

        public int marcarRecepFisicaAhoraService(decimal nIdeSol, decimal nSeqPaso, decimal nSeqactor, string idUsuario)
        {
            BandejaDAO bandejaDAO = new BandejaDAO();
            return bandejaDAO.marcarRecepFisicaAhoraDAO(nIdeSol, nSeqPaso, nSeqactor, idUsuario);
        }

        public int recepcionFisicaLoteFinService(string cadena, string dfecRecepFis, string hora, string minuto, string idUsuario)
        {
            BandejaDAO bandejaDAO = new BandejaDAO();
            String fecRecep = dfecRecepFis + " " + hora + ":" + minuto;
            DateTime fecha = UtilitariosUtil.formatearFechaHHmm(fecRecep);
            return bandejaDAO.recepcionFisicaLoteFinDAO(fecha, cadena, idUsuario);
        }

        public String[] registraDerivacionService(SIPDetSolicitud sipDetSolicitud)
        {
            BandejaDAO bandejaDAO = new BandejaDAO();
            return bandejaDAO.registraDerivacionDAO(sipDetSolicitud);
        }

        public void insertaArchivosService(byte[] bytesFile, int n_IdeSol, int nextPaso, string nameFile)
        {
            BandejaDAO bandejaDAO = new BandejaDAO();
            bandejaDAO.insertaArchivosDAO(bytesFile, n_IdeSol, nextPaso, nameFile);
        }

        public List<SIPDetArchivo> listaArchivosAdjuntosService(int n_IdeSol)
        {
            BandejaDAO bandejaDAO = new BandejaDAO();
           return bandejaDAO.listaArchivosAdjuntosDAO(n_IdeSol);
        }



        public string[] registraBitacoraService(SIPDetBitacora sipDetBitacora)
        {
            BandejaDAO bandejaDAO = new BandejaDAO();
            return bandejaDAO.registraBitacoraDAO(sipDetBitacora);
        }

        public List<SIPDetBitacora> listaBitacoraService(string nIdeSol)
        {
            BandejaDAO bandejaDAO = new BandejaDAO();
            return bandejaDAO.listaBitacoraDAO(Int32.Parse(nIdeSol));
        }

        public List<OptionsVO> getListaPersonasPorAreaService(string nIdeDepUser)
        {
            BandejaDAO bandejaDAO = new BandejaDAO();
            return bandejaDAO.getListaPersonasPorAreaDAO(Int32.Parse(nIdeDepUser));
        }

        public string[] registraAsignacionService(SIPDetSolicitud sipDetSolicitud)
        {
            BandejaDAO bandejaDAO = new BandejaDAO();
            return bandejaDAO.registraAsignacionDAO(sipDetSolicitud);
        }


        public void setFechaLecturaService(string n_IdeSol, string n_SeqPaso, string n_SeqActor, string id_Usuario)
        {
            BandejaDAO bandejaDAO = new BandejaDAO();
            bandejaDAO.setFechaLecturaDAO(Int32.Parse(n_IdeSol), Int32.Parse(n_SeqPaso), Int32.Parse(n_SeqActor), Int32.Parse(id_Usuario));
        }
    }
}
